Groovy তে Inheritance, Polymorphism, এবং Interfaces অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং (OOP) এর মূল নীতি যা কোড পুনঃব্যবহারযোগ্য, মডুলার এবং ডায়নামিক প্রোগ্রামিংয়ের জন্য সহায়ক। Groovy তে এই ধারণাগুলি Java এর মতো কাজ করে, তবে এর সিনট্যাক্স অনেকটা সহজ ও সংক্ষিপ্ত।
এখানে Inheritance, Polymorphism, এবং Interfaces সম্পর্কে বিস্তারিত আলোচনা করা হলো।
ইনহেরিটেন্স হল একটি অবজেক্ট-ওরিয়েন্টেড ধারণা যেখানে একটি ক্লাস অন্য ক্লাসের বৈশিষ্ট্য (প্রপার্টি এবং মেথড) উত্তরাধিকারসূত্রে পায়। এটি কোড পুনঃব্যবহারযোগ্যতার জন্য সহায়ক, কারণ আমরা বিদ্যমান কোডের উপর নতুন বৈশিষ্ট্য বা ফাংশনালিটি যোগ করতে পারি।
// Superclass
class Animal {
String name
def speak() {
println "$name makes a sound"
}
}
// Subclass
class Dog extends Animal {
def speak() {
println "$name barks"
}
}
def dog = new Dog(name: "Rex")
dog.speak() // Output: Rex barks
এখানে, Dog
ক্লাস Animal
ক্লাস থেকে ইনহেরিট করেছে এবং speak()
মেথডটি ওভাররাইড করেছে।
আপনি super
কিওয়ার্ড ব্যবহার করে সুপার ক্লাসের মেথড অথবা কন্সট্রাক্টর কল করতে পারেন।
class Animal {
String name
Animal(String name) {
this.name = name
}
def speak() {
println "$name makes a sound"
}
}
class Dog extends Animal {
Dog(String name) {
super(name)
}
def speak() {
super.speak() // Calling the speak method of Animal class
println "$name barks"
}
}
def dog = new Dog("Rex")
dog.speak()
এখানে, Dog
ক্লাসে super.speak()
ব্যবহার করে Animal
ক্লাসের speak()
মেথড কল করা হয়েছে।
পলিমরফিজম হল এমন একটি ধারণা যেখানে একাধিক ক্লাস একই নামের মেথড ব্যবহার করতে পারে, তবে তাদের কার্যকারিতা ভিন্ন হতে পারে। Groovy তে পলিমরফিজম মেথড ওভাররাইডিং এবং ওভারলোডিং এর মাধ্যমে অর্জিত হয়।
class Animal {
def sound() {
println "Animal makes a sound"
}
}
class Dog extends Animal {
@Override
def sound() {
println "Dog barks"
}
}
class Cat extends Animal {
@Override
def sound() {
println "Cat meows"
}
}
def dog = new Dog()
dog.sound() // Output: Dog barks
def cat = new Cat()
cat.sound() // Output: Cat meows
এখানে, Dog
এবং Cat
ক্লাস দুটি sound()
মেথডের কার্যকারিতা ভিন্নভাবে বাস্তবায়ন করেছে, যদিও মেথডের নাম এক। এটি পলিমরফিজম।
Groovy তে আপনি একই ক্লাসের অবজেক্ট ব্যবহার করে বিভিন্ন আচরণ দেখতে পারেন:
def animal = new Dog()
animal.sound() // Output: Dog barks
animal = new Cat()
animal.sound() // Output: Cat meows
এখানে, animal
অবজেক্টের রেফারেন্স আলাদা আলাদা ক্লাসের (Dog এবং Cat) উপর নির্ভর করে ভিন্ন ভিন্ন আচরণ প্রদর্শন করছে।
Groovy তে ইন্টারফেস একটি সংজ্ঞায়িত চুক্তি যা কোন ক্লাসের মেথডের সিগনেচার সংরক্ষণ করে। একটি ক্লাস একাধিক ইন্টারফেস ইমপ্লিমেন্ট (অথবা বাস্তবায়ন) করতে পারে এবং এতে থাকা মেথডগুলির বাস্তবায়ন প্রদান করতে পারে। Groovy তে ইন্টারফেসের মাধ্যমে ক্লাসগুলির মধ্যে কম্পোজিশন এবং নমনীয়তা বৃদ্ধি করা হয়।
interface Animal {
def speak()
}
class Dog implements Animal {
def speak() {
println "The dog barks"
}
}
class Cat implements Animal {
def speak() {
println "The cat meows"
}
}
def dog = new Dog()
dog.speak() // Output: The dog barks
def cat = new Cat()
cat.speak() // Output: The cat meows
এখানে, Animal
একটি ইন্টারফেস এবং Dog
ও Cat
ক্লাস গুলি এই ইন্টারফেস ইমপ্লিমেন্ট করেছে। প্রতিটি ক্লাস তাদের নিজস্ব speak()
মেথডের বাস্তবায়ন দিয়েছে।
Groovy তে একটি ক্লাস একাধিক ইন্টারফেসও ইমপ্লিমেন্ট করতে পারে:
interface Animal {
def speak()
}
interface Pet {
def play()
}
class Dog implements Animal, Pet {
def speak() {
println "The dog barks"
}
def play() {
println "The dog plays"
}
}
def dog = new Dog()
dog.speak() // Output: The dog barks
dog.play() // Output: The dog plays
এখানে, Dog
ক্লাস দুটি ইন্টারফেস (Animal
এবং Pet
) ইমপ্লিমেন্ট করেছে এবং তাদের মেথডগুলির বাস্তবায়ন প্রদান করেছে।
Groovy তে Inheritance, Polymorphism, এবং Interfaces এর সহজ সিনট্যাক্স এবং শক্তিশালী ব্যবহারের মাধ্যমে কোড পুনঃব্যবহার, নমনীয়তা এবং মডুলারিটি সহজতর হয়।
common.read_more